package Wust_Java_Club_Middle_Test;

import java.util.Scanner;

public class Climbing_Stairs {
//	static int[] memory;
//	static int MOD = 100003;
//	static int N,k;
//	
//	public static int getAns(int n) {
//		if(memory[n]!=0) return memory[n];
//		int ans=0;
//		for(int i=Math.max(0, n-k);i<n;i++) {
//			ans = (ans+getAns(i))%MOD;
//		}
//		return memory[n]=ans;
//	}
//	public static void main(String[] args) {
//		Scanner scanner = new Scanner(System.in);
//		N = scanner.nextInt();
//		k=scanner.nextInt();
//		memory = new int[N+1];
//		memory[0] = memory[1]=1;
//		System.out.println(getAns(N));
//	}
	
	static int MOD = 100003;
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		int n =sc.nextInt(),k=sc.nextInt();
		int[] dp = new int[n+1];
		dp[0]=dp[1]=1;
		for(int i=2;i<=n;i++) {
			//dp[i]=dp[i-1]+dp[i-2]+...+dp[i-k]
			for(int j=Math.max(0, i-k);j<i;j++) {
				dp[i]+=dp[j];
				dp[i]%=MOD;
			}
		}
		System.out.println(dp[n]);
	}
}
